var $j = jQuery.noConflict();
var map = null;
var markers = new OpenLayers.Layer.Markers( "Markers" );
var proj4326 = new OpenLayers.Projection("EPSG:4326");
var projmerc = new OpenLayers.Projection("EPSG:900913");

function updateMunicipiosReside(estado){
${remoteFunction(
        controller: 'demographic',
        action: 'ajaxGetMunicipios',
        onComplete: 'getCoordenadas(1)',
        asynchronous: 'false',
        update: 'municresid',
        params: '\'id=\' + estado')}
}

function updateParroquiaReside(municipio){
${remoteFunction(
        controller: 'demographic',
        action: 'ajaxGetMunicipios',
        onComplete: 'getCoordenadas(2)',
        asynchronous: 'false',
        update: 'direccion',
        params: '\'id=\' + municipio')}
}

function updateCallesReside(calle){
${remoteFunction(
        controller: 'demographic',
        action: 'ajaxGetCalles',
        onComplete: 'getCoordenadas(3)',
        asynchronous: 'false',
        update: 'calles',
        params: '\'id=\' + calle')}
}


function showMap() {
    var lonlat = new OpenLayers.LonLat(-66, 9);
    lonlat.transform(proj4326, projmerc);
    map = new OpenLayers.Map("MyMap");
    map.addLayer(new OpenLayers.Layer.OSM());
    map.setCenter(lonlat, 5);
    var click = new OpenLayers.Control.Click();
    map.addControl(click);
    click.activate();
}

function getCoordenadas(option){
switch(option) {
    case 1:
        var id = $j("#entidresid").val();
        ${remoteFunction(
            controller: 'demographic',
            action: 'ajaxGetCoordenadas',
            update: 'estados_coordenadas',
            onComplete:'moverMapa(1)',
            asynchronous: 'false',
            params: '\'id=\'+id + \'!\' + option')};
    break;
    case 2:
        var id = $j("#municresid").val();
        ${remoteFunction(
            controller: 'demographic',
            action: 'ajaxGetCoordenadas',
            update: 'municipios_coordenadas',
            onComplete:'moverMapa(2)',
            asynchronous: 'false',
            params: '\'id=\'+id + \'!\' + option')};
    break;
    case 3:
        var id = $j("#direccion").val();
        ${remoteFunction(
            controller: 'demographic',
            action: 'ajaxGetCoordenadas',
            update: 'parroquias_coordenadas',
            onComplete:'moverMapa(3)',
            asynchronous: 'false',
            params: '\'id=\'+id + \'!\' + option')};
    break;
    case 4:
        var id = $j("#avenidacalle").val();
        ${remoteFunction(
            controller: 'demographic',
            action: 'ajaxGetCoordenadas',
            update: 'calles_coordeandas',
            onComplete:'moverMapa(4)',
            asynchronous: 'false',
            params: '\'id=\'+id + \'!\' + option')};
    break;
    }
}

function moverMapa(option){
    switch(option){
        case 1:
            var vx = $j("#lat_coordenadas_estado").attr("value");
            var vy = $j("#lon_coordenadas_estado").attr("value");
            var lonlat = new OpenLayers.LonLat(vy,vx);
            lonlat.transform(proj4326, projmerc);
            map.setCenter(lonlat,11);
            break;
        case 2:
            var vx = $j("#lat_coordenadas_municipio").attr("value");
            var vy = $j("#lon_coordenadas_municipio").attr("value");
            var lonlat = new OpenLayers.LonLat(vy,vx);
            lonlat.transform(proj4326, projmerc);
            map.setCenter(lonlat,13);
            break;
        case 3:
            var vx = $j("#lat_coordenadas_parroquia").attr("value");
            var vy = $j("#lon_coordenadas_parroquia").attr("value");
            var lonlat = new OpenLayers.LonLat(vy,vx);
            lonlat.transform(proj4326, projmerc);
            map.setCenter(lonlat,15);
            break;
        case 4:
            markers.clearMarkers();
            var vx = $j("#lat_coordenadas_calle").attr("value");
            var vy = $j("#lon_coordenadas_calle").attr("value");
            var lonlat = new OpenLayers.LonLat(vy,vx);
            lonlat.transform(proj4326, projmerc);
            map.addLayer(markers);
            markers.addMarker(new OpenLayers.Marker(lonlat));
            map.setCenter(lonlat,17);
            break;
    }
}